package com.JUC;


import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class JUC13_streamDemo {
    public static void main(String[] args) {
        User user1 = new User(11,"a",23);
        User user2 = new User(12,"b",24);
        User user3 = new User(13,"c",25);
        User user4 = new User(14,"d",26);
        User user5 = new User(16,"e",27);

        List<User> list = Arrays.asList(user1,user2,user3,user4,user5);

        // 1. 创建数据源
        //  list.stream() 中的类型就是 list 中元素的类型 —— User
        // 2. 处理流程
        //  在最后加上 .forEach(System.out::println) 可打印筛选后的结果
        // 3. 终止操作，产生结果，这就直接输出结果了
        Stream<String> limit = list.stream()
                .filter((u) -> {
                    return u.getId() % 2 == 0;
                })// 2.1 过滤 ID 为偶数
                .filter(u -> {
                    return u.getAge() > 24;
                })//  2.2 过滤 Age > 24
                .map(m -> {
                    return m.getUserName().toUpperCase();
                })// 2.3 把上面筛选结果的名字变为大写
                .sorted((o1, o2) -> {
                    return o2.compareTo(o1);
                })// 2.4 倒序排列,o1 在前就是升序，o2 在前就是降序
                .limit(1);// 2.5 限制输出一条数据

        // 在最后加上 .forEach(System.out::println) 一样的效果
        System.out.println(Arrays.toString(limit.toArray()));

    }
}

class User{
    private Integer Id;
    private String userName;
    private int age;

    public Integer getId() {
        return Id;
    }

    public void setId(Integer id) {
        Id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public User(Integer id, String userName, int age) {
        Id = id;
        this.userName = userName;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "Id=" + Id +
                ", userName='" + userName + '\'' +
                ", age=" + age +
                '}';
    }
}
